package com.wen.common.pojo.account;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.wen.common.pojo.system.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * 文章实体类
 */
/*
 * 比如，有多个类有相同的部分属性，把它们定义到父类中，恰好id（数据库主键）也在父类中，
 * 那么就会存在部分对象在比较时，它们并不相等，却因为lombok自动生成的equals(Object other) 和 hashCode()方法判定为相等，从而导致出错。
 *
 * 解决方法：
 *   1.使用@Getter @Setter @ToString代替@Data并且自定义equals(Object other) 和 hashCode()方法，比如有些类只需要判断主键id是否相等即足矣
 *   2.或使用@Data时同时加上@EqualsAndHashCode(callSuper=true)注解。即可
 * */
// TODO: 不使用父类的equals()和hashCode()方法
@EqualsAndHashCode(callSuper = true)
@TableName("cms_content")
@Data
public class Content extends BaseEntity {

    //指定主键生成策略使用雪花算法（默认策略）
    @TableId(type = IdType.ASSIGN_ID)
    private String id;
    //所属栏目id
    private String categoryId;
    // 文章内容
    private String contentDetails;
    // 文章标题
    private String contentTitle;
    // 文章跳转链接地址
    private String contentUrl;
    // 关键字
    private String contentKeyword;
    // 描述
    private String contentDescription;
    // 文章缩略图
    private String contentImg;
    // 文章来源
    private String contentSource;
    // 文章作者
    private String contentAuthor;
    // 是否显示
    private String contentDisplay;
    // 文章类型
    private String contentType;
    // 发布时间
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date contentDatetime;

}
